Presto হল একটি ডিস্ট্রিবিউটেড SQL কোয়েরি ইঞ্জিন যা বিভিন্ন ডেটা সোর্সের সাথে সংযুক্ত হতে সক্ষম। এর মধ্যে AWS S3 (Amazon Simple Storage Service) একটি জনপ্রিয় স্টোরেজ সিস্টেম হিসেবে ব্যবহৃত হয়। Presto S3 ব্যবহার করে আপনি ক্লাউডে সংরক্ষিত ডেটা দ্রুত এবং দক্ষভাবে বিশ্লেষণ করতে পারেন।
Presto তে AWS S3 ব্যবহার করার জন্য, আপনাকে Hive Connector এর মাধ্যমে S3-তে সংরক্ষিত ডেটার উপর কোয়েরি চালাতে হবে। S3 এবং Presto এর সংযোগ স্থাপনের জন্য কিছু কনফিগারেশন এবং সেটআপ করতে হবে।
Presto AWS S3 তে সংরক্ষিত ডেটা বিশ্লেষণের জন্য Hive Connector ব্যবহার করে। Hive Connector Presto কে S3 তে ডেটা পড়তে এবং লিখতে সহায়তা করে। Presto এর মাধ্যমে আপনি S3 এ সংরক্ষিত বিভিন্ন ফাইল যেমন Parquet, ORC, JSON, CSV ইত্যাদি ফাইল ফরম্যাটে সংরক্ষিত ডেটা বিশ্লেষণ করতে পারবেন।
প্রথমে Presto এর Hive Connector
ব্যবহার করে S3 এর সাথে সংযোগ স্থাপন করতে হবে। এই সংযোগ কনফিগার করতে hive.properties
ফাইল তৈরি করা হয় যা etc/catalog/
ফোল্ডারে রাখা হয়।
Presto এর etc/catalog/
ডিরেক্টরিতে একটি hive.properties
ফাইল তৈরি করুন এবং নিচের কনফিগারেশনটি যোগ করুন:
connector.name=hive-hadoop2
hive.metastore.uri=thrift://<metastore-uri>:9083
hive.s3.endpoint=s3.amazonaws.com
hive.s3.aws-access-key-id=<your-aws-access-key>
hive.s3.aws-secret-access-key=<your-aws-secret-key>
hive.s3.ssl-enabled=true
hive.s3.bucket-name=<your-bucket-name>
hive.s3.path-style-access=false
hive-hadoop2
।Presto CLI বা Presto Web UI থেকে আপনি S3 তে সংরক্ষিত ডেটা বিশ্লেষণ করতে পারেন। S3 এ সংরক্ষিত ডেটা যেমন Parquet বা ORC ফাইল ফরম্যাটে থাকলে, Presto সেই ফরম্যাটের ডেটা রিড এবং প্রক্রিয়া করতে সক্ষম।
java -jar presto-cli-350-executable.jar --server <presto-server-ip>:8080 --catalog hive --schema <your-schema>
এরপর, S3 তে সংরক্ষিত ডেটা বিশ্লেষণ করতে নিচের মত কোয়েরি চালানো যায়:
SELECT * FROM s3_table_name LIMIT 10;
এই কোয়েরি S3 তে সংরক্ষিত s3_table_name
টেবিলের প্রথম ১০টি রেকর্ড বের করে আনবে।
S3 তে সংরক্ষিত Parquet বা ORC ফাইলের ডেটা বিশ্লেষণ করা Presto এর মাধ্যমে খুবই সহজ। Presto তে Hive Connector ব্যবহার করে আপনি Parquet বা ORC ফাইল ফরম্যাটে সংরক্ষিত ডেটার উপর কোয়েরি চালাতে পারবেন।
SELECT * FROM parquet('s3://your-bucket-name/path/to/parquet-file');
SELECT * FROM orcfile('s3://your-bucket-name/path/to/orc-file');
S3 তে ডেটা বিশ্লেষণ করতে গেলে কিছু অপটিমাইজেশন পদ্ধতি ব্যবহার করলে কোয়েরি পারফরম্যান্স বাড়ানো সম্ভব:
S3 তে ডেটা পার্টিশন করে রাখলে কোয়েরি দ্রুততর হবে। Presto Hive Connector পার্টিশনিং সাপোর্ট করে, তাই আপনি টেবিলের ডেটা পার্টিশন করে কাজ করতে পারেন।
CREATE TABLE partitioned_table (
column1 INT,
column2 VARCHAR
)
WITH (
format = 'PARQUET',
partitioned_by = ARRAY['column1']
);
Presto পারফরম্যান্স বৃদ্ধির জন্য সঠিক ফাইল ফরম্যাট ব্যবহার করা উচিত। Parquet এবং ORC ফাইল ফরম্যাটs সাধারণত ডেটা বিশ্লেষণের জন্য অনেক বেশি কার্যকরী এবং কম জায়গা নেয়।
Presto শুধুমাত্র প্রয়োজনীয় কলামগুলি লোড করে কাজ করে, যা ডেটা প্রসেসিং দ্রুততর করে।
Presto S3 তে ডেটা ইনসার্ট বা এক্সপোর্ট করতে পারে। আপনাকে INSERT INTO বা CTAS (Create Table As Select) কৌশল ব্যবহার করতে হবে।
CREATE TABLE s3_table
WITH (format = 'PARQUET')
AS SELECT * FROM local_table;
এই কোয়েরিটি local_table থেকে ডেটা নিয়ে S3 তে নতুন s3_table তৈরি করবে।
Presto S3 এর সাথে সংযোগ করে একটি শক্তিশালী ডেটা বিশ্লেষণ টুল হিসেবে কাজ করতে পারে। Hive Connector ব্যবহার করে আপনি সহজে S3 তে সংরক্ষিত ডেটা পড়তে এবং বিশ্লেষণ করতে পারবেন। S3 তে ডেটা পার্টিশনিং, ফাইল ফরম্যাট অপটিমাইজেশন, এবং কিউরির পারফরম্যান্স উন্নত করার জন্য বিভিন্ন পদ্ধতি ব্যবহার করা যেতে পারে। Presto এর মাধ্যমে S3 এর বিশাল ডেটাসেট দ্রুত বিশ্লেষণ করা সম্ভব, যা ক্লাউডে ডেটা সঞ্চয় এবং বিশ্লেষণের জন্য একটি আদর্শ সমাধান।
Presto একটি শক্তিশালী ডিস্ট্রিবিউটেড SQL কোয়েরি ইঞ্জিন যা বিভিন্ন ডেটা সোর্সের সাথে কাজ করতে পারে। এর মধ্যে একটি জনপ্রিয় সোর্স হল Amazon S3 (Simple Storage Service), যা ক্লাউড ভিত্তিক ডেটা স্টোরেজ হিসাবে ব্যবহার করা হয়। Presto S3-এর সাথে সংযুক্ত হয়ে ডেটা বিশ্লেষণ করতে পারে। এই টিউটোরিয়ালে আমরা Presto S3 Data Source কনফিগারেশন প্রক্রিয়া বিস্তারিতভাবে দেখবো।
Presto S3 ডেটা সোর্সে সংযোগ স্থাপন করতে Hive Connector ব্যবহার করা হয়। সুতরাং, আপনাকে Hive Connector কনফিগার করতে হবে যা Amazon S3-এর সাথে সংযুক্ত হবে।
Presto-তে S3 কনফিগার করতে etc/catalog/hive.properties
ফাইলে সঠিক কনফিগারেশন করতে হবে। এটি Presto S3 সংযোগের জন্য নির্দেশিকা হিসেবে কাজ করবে। ফাইলটির মধ্যে নিম্নলিখিত কনফিগারেশন সেট করতে হবে:
hive.properties কনফিগারেশন ফাইল:
connector.name=hive-hadoop2
hive.metastore.uri=thrift://localhost:9083
hive.s3.endpoint=s3.amazonaws.com
hive.s3.aws-access-key-id=<AWS_ACCESS_KEY_ID>
hive.s3.aws-secret-access-key=<AWS_SECRET_ACCESS_KEY>
hive.s3.use-instance-credentials=true
আপনার AWS অ্যাকাউন্টে লগ ইন করুন এবং IAM (Identity and Access Management) থেকে একটি Access Key এবং Secret Key তৈরি করুন। এই কীগুলির মাধ্যমে Presto আপনার S3 ব্যাকএন্ডের সাথে সংযুক্ত হবে। সেগুলি উপরের কনফিগারেশন ফাইলে সঠিকভাবে প্রবেশ করান।
যদি আপনার সিস্টেমে AWS CLI ইনস্টল করা থাকে এবং আপনি AWS CLI credential ব্যবহার করতে চান, তাহলে আপনি নিম্নলিখিত কনফিগারেশন ফাইল ব্যবহার করতে পারেন:
aws configure
এটি আপনাকে আপনার AWS Access Key ID এবং AWS Secret Access Key প্রবেশ করতে বলবে। CLI কনফিগারেশন ফাইলটি স্বয়ংক্রিয়ভাবে /home/<user>/.aws/credentials
ফাইলে সংরক্ষণ করবে। Presto S3 এর জন্য এই তথ্য ব্যবহার করবে।
S3 ডেটা সোর্স কনফিগার করার পরে, Presto সন্নিবেশিত S3 ডেটার উপর SQL কোয়েরি চালাতে সক্ষম হবে। একবার সঠিক কনফিগারেশন সম্পন্ন হলে, Presto আপনার S3-এ সংরক্ষিত ডেটাকে কোয়েরি করতে সক্ষম হবে।
এখন আপনি Presto CLI বা Web UI ব্যবহার করে S3 ডেটাসোর্সে কোয়েরি চালাতে পারবেন। উদাহরণ:
Presto CLI এ কোয়েরি চালানো:
java -jar presto-cli-350-executable.jar --server <presto-server-ip>:8080 --catalog hive --schema default
তারপর আপনি S3 তে সংরক্ষিত ডেটাতে কোয়েরি চালাতে পারবেন:
SELECT * FROM s3_table LIMIT 10;
এটি আপনার S3 bucket এর s3_table টেবিল থেকে প্রথম ১০টি রেকর্ড তুলে আনবে।
আপনার S3 ডেটা সোর্সের জন্য কিছু অতিরিক্ত কনফিগারেশন অপশন রয়েছে যা আপনি Performance এবং Security এর জন্য কাস্টমাইজ করতে পারেন।
S3-এর বিভিন্ন স্টোরেজ ক্লাস রয়েছে যেমন STANDARD
, IA
(Infrequent Access), এবং ONEZONE_IA
। আপনি যদি স্টোরেজ ক্লাস কাস্টমাইজ করতে চান, তাহলে Presto-র hive.s3.storage-class
প্যারামিটার ব্যবহার করতে পারেন।
hive.s3.storage-class=STANDARD_IA
S3-এর বড় ফাইলের জন্য Multipart Upload ব্যবহার করতে পারেন, যা বড় ফাইল দ্রুত আপলোড করার জন্য সহায়ক। Presto সিস্টেমের মাধ্যমে S3 multipart upload সমর্থিত।
hive.s3.multipart-upload-enabled=true
Presto-তে S3 ডেটা সোর্সের উপর কোয়েরি অপটিমাইজ করার জন্য কিছু টিপস:
WHERE
ক্লজ, S3-এ ডেটা পড়ার আগে প্রয়োগ করতে পারে, যা ডেটা প্রক্রিয়াকরণ দ্রুত করে।Presto-তে S3 ডেটা সোর্স কনফিগার করা একটি সহজ প্রক্রিয়া, যেখানে Hive Connector ব্যবহার করে S3-এর সাথে সংযোগ স্থাপন করা হয়। S3 এ সংরক্ষিত ডেটা কুয়েরি করার জন্য আপনাকে সঠিক কনফিগারেশন ফাইল সেট করতে হবে, যা Presto-কে আপনার ডেটা সোর্সে সংযুক্ত করতে সাহায্য করবে। একবার কনফিগারেশন হয়ে গেলে, Presto S3-এর উপর দ্রুত SQL কোয়েরি চালাতে সক্ষম হবে, এবং আপনিও সহজেই বিশ্লেষণ করতে পারবেন।
Presto একটি অত্যন্ত শক্তিশালী ডিস্ট্রিবিউটেড SQL কোয়েরি ইঞ্জিন যা বিভিন্ন ডেটা সোর্সের সাথে কাজ করতে পারে। একটি গুরুত্বপূর্ণ ডেটা সোর্স হলো Amazon S3, যা একটি স্কেলেবল এবং সুরক্ষিত ক্লাউড স্টোরেজ সার্ভিস। Presto S3 এর সাথে কাজ করতে পারে এবং S3 থেকে ডেটা পড়ে SQL কোয়েরি চালাতে সহায়ক।
প্রথমে আপনাকে Presto-কে S3 ডেটা সোর্সের সাথে সংযুক্ত করতে হবে এবং তারপর S3-এ সংরক্ষিত ডেটার উপর SQL কোয়েরি চালাতে হবে।
Presto এর সাথে S3 সংযোগ করার জন্য Hive Connector ব্যবহার করতে হয়। Presto Hive Connector-এ S3 এর জন্য কিছু কনফিগারেশন সেটিংস রয়েছে যা S3 এ সংরক্ষিত ডেটা অ্যাক্সেস করতে সহায়ক।
Presto-তে S3 এর সাথে সংযোগ স্থাপনের জন্য, hive.properties
কনফিগারেশন ফাইল তৈরি করতে হবে যা Presto ক্লাস্টারের etc/catalog/
ফোল্ডারে থাকবে।
hive.properties উদাহরণ:
connector.name=hive-hadoop2
hive.s3.endpoint=s3.amazonaws.com
hive.s3.aws-access-key-id=<AWS_ACCESS_KEY_ID>
hive.s3.aws-secret-access-key=<AWS_SECRET_ACCESS_KEY>
hive.metastore.uri=thrift://<hive-metastore-uri>
thrift://localhost:9083
হবে, তবে আপনি আপনার মেটাস্টোর কনফিগারেশন অনুযায়ী এটি সেট করতে হবে।ধাপ ২: AWS Credentials Setup
Presto-তে S3 অ্যাক্সেস করার জন্য আপনার AWS অ্যাক্সেস কীগুলি সঠিকভাবে কনফিগার করা থাকতে হবে। আপনি ~/.aws/credentials
ফাইলে AWS অ্যাক্সেস কীগুলি রাখতে পারেন।
AWS Credentials File (~/.aws/credentials
) উদাহরণ:
[default]
aws_access_key_id = <AWS_ACCESS_KEY_ID>
aws_secret_access_key = <AWS_SECRET_ACCESS_KEY>
এটি Presto-কে AWS S3 অ্যাক্সেস করতে সহায়ক হবে।
Presto সঠিকভাবে কনফিগার করা হলে, আপনি Presto CLI বা SQL কোয়েরি ইঞ্জিন ব্যবহার করে S3 থেকে ডেটা পড়তে পারবেন। Presto CLI দিয়ে S3 ডেটা Query করার জন্য প্রথমে আপনাকে Presto CLI-এ লগইন করতে হবে এবং সঠিক ক্যাটালগ এবং স্কিমা নির্বাচন করতে হবে।
java -jar presto-cli-350-executable.jar --server <presto-server-ip>:8080 --catalog hive --schema default
এখানে:
hive
হল ক্যাটালগ নাম (যেহেতু আমরা Hive Connector ব্যবহার করছি)।default
হল স্কিমা নাম।S3-এ একটি টেবিল (যেমন CSV বা Parquet ফাইল) থাকতে পারে, যা Query করা যাবে। উদাহরণস্বরূপ:
SELECT * FROM s3_table LIMIT 10;
এটি s3_table
নামে একটি টেবিলের প্রথম ১০টি রেকর্ড প্রদর্শন করবে যা S3 এ সংরক্ষিত।
SELECT * FROM parquet.'s3://your-bucket-name/path/to/your-file.parquet' LIMIT 10;
এটি S3-এর নির্দিষ্ট পথ থেকে Parquet ফাইলটি পড়ে এবং প্রথম ১০টি রেকর্ড প্রদর্শন করবে।
S3 থেকে ডেটা পড়ার সময় কিছু অপ্টিমাইজেশন কৌশল অনুসরণ করা যেতে পারে:
Partitioning: S3-এ ডেটা পার্টিশন করার মাধ্যমে কোয়েরি পারফরম্যান্স উন্নত করা যায়। প্রতিটি পার্টিশনের জন্য আলাদা আলাদা কোয়েরি চালানো সহজ এবং দ্রুত হয়।
Example:
SELECT * FROM s3_table WHERE year = 2022 AND month = 01;
Presto দিয়ে S3 ডেটা Query করা একটি কার্যকরী এবং স্কেলেবল পদ্ধতি। Presto S3 Connector ব্যবহার করে আপনি সহজেই S3-এ সংরক্ষিত ডেটা সংযুক্ত করতে এবং SQL কোয়েরির মাধ্যমে বিশ্লেষণ করতে পারেন। S3 ডেটার উপর পারফরম্যান্স অপটিমাইজেশন কৌশলগুলি অনুসরণ করে দ্রুত এবং কার্যকরী ডেটা প্রসেসিং করা যায়।
S3 (Amazon Simple Storage Service) এবং HDFS (Hadoop Distributed File System) উভয়ই ডিস্ট্রিবিউটেড ফাইল স্টোরেজ সিস্টেম, তবে তাদের ডিজাইন, কার্যকারিতা এবং ব্যবহারের ক্ষেত্রে কয়েকটি মৌলিক পার্থক্য রয়েছে। নিচে S3 এবং HDFS-এর মধ্যে পার্থক্যগুলি তুলে ধরা হলো:
Feature | S3 | HDFS |
---|---|---|
Type | Object Storage | File Storage |
Deployment | Cloud-based (AWS) | Self-hosted (Hadoop Cluster) |
Management | Fully managed | Self-managed |
Scalability | Auto-scaling, virtually unlimited | Manual scaling, based on cluster size |
Data Availability | High availability, redundant across regions | High availability, data replicated in cluster |
Performance | Can be optimized but depends on cloud setup | Optimized for large-scale distributed data |
Cost | Pay-as-you-go | Initial cost for hardware, then ongoing maintenance cost |
Security | Built-in encryption, IAM, ACLs | Kerberos, ACLs |
Use Case | Cloud-native storage for all types of data | Big data and analytics in Hadoop ecosystem |
S3 একটি ক্লাউড-বেসড স্টোরেজ সিস্টেম যা সহজ ব্যবস্থাপনা এবং স্কেলিং অফার করে, যখন HDFS
একটি ডিস্ট্রিবিউটেড ফাইল সিস্টেম যা হ্যাডোপের অংশ হিসেবে ব্যবহার হয় এবং বড় ডেটাসেটের জন্য বেশি কার্যকরী।
Presto হল একটি ডিস্ট্রিবিউটেড SQL কোয়েরি ইঞ্জিন, যা বিভিন্ন ডেটা সোর্স থেকে ডেটা অ্যাক্সেস করতে সক্ষম। Amazon S3 হল একটি জনপ্রিয় ক্লাউড স্টোরেজ সিস্টেম যেখানে বৃহৎ আকারের ডেটা সংরক্ষিত থাকে। তবে, S3 থেকে ডেটা কুয়েরি করার সময় লেটেন্সি এবং ডেটা ট্রান্সফার খরচের কারণে পারফরম্যান্স সমস্যা হতে পারে। এসব সমস্যার সমাধান এবং কুয়েরি এক্সিকিউশনের সময় পারফরম্যান্স উন্নত করতে বিভিন্ন S3 Query Optimization Techniques ব্যবহার করা যেতে পারে।
নিচে কিছু কার্যকরী S3 Query Optimization Techniques দেওয়া হল, যা Presto দিয়ে S3 ডেটা কুয়েরি করার সময় পারফরম্যান্স বাড়াতে সাহায্য করবে।
পার্টিশনিং হল এমন একটি কৌশল, যেখানে ডেটা নির্দিষ্ট কলাম (যেমন date
, region
, product_type
) এর উপর ভিত্তি করে ছোট ছোট ভাগে বিভক্ত করা হয়। এর ফলে, Presto কেবলমাত্র প্রয়োজনীয় পার্টিশনগুলো পড়বে এবং বাকী অংশগুলোকে এড়িয়ে যাবে, যার ফলে ডেটা রিডিং সময় কমে যাবে।
ফোল্ডার স্ট্রাকচার: S3 তে ডেটা পার্টিশন করতে হায়ারারকিক্যাল ফোল্ডার স্ট্রাকচার ব্যবহার করুন, যেমন:
s3://my-bucket/data/year=2023/month=01/day=01/
s3://my-bucket/data/year=2023/month=01/day=02/
S3 তে ডেটা সাধারণত অবজেক্ট ফরম্যাটে স্টোর করা হয়, যা বিশ্লেষণাত্মক কাজের জন্য উপযুক্ত নয়। তবে কলামার ফাইল ফরম্যাট (যেমন Parquet অথবা ORC) ব্যবহারের মাধ্যমে পারফরম্যান্স উল্লেখযোগ্যভাবে বৃদ্ধি পায়, বিশেষত যেহেতু এই ফরম্যাটগুলো শুধুমাত্র প্রয়োজনীয় কলামগুলো পড়তে দেয়, ফলে I/O এবং মেমরি ব্যবহার কমে।
Predicate Pushdown হল একটি কৌশল যেখানে WHERE ক্লজ বা ফিল্টার কন্ডিশন স্লো কোয়েরি এক্সিকিউশনের আগে S3 এর ডেটা সোর্সে পাঠানো হয়, যাতে শুধুমাত্র প্রয়োজনীয় ডেটা Presto দ্বারা প্রক্রিয়া করা হয়।
WHERE date = '2023-01-01'
) S3 ডেটা সোর্সে পাঠায়। এতে করে S3 শুধুমাত্র সেই ডেটা সরবরাহ করবে যা ফিল্টার কন্ডিশন অনুযায়ী প্রয়োজন, ফলে ডেটা রিডিং সময় কমে যাবে।Presto ডিস্ট্রিবিউটেড আর্কিটেকচার ব্যবহার করে একাধিক Worker Node এর মাধ্যমে কোয়েরি এক্সিকিউট করে। এতে S3 থেকে ডেটা দ্রুত অ্যাক্সেস করা সম্ভব হয়, কারণ একাধিক নোড একসাথে কাজ করে।
S3 Select হল একটি ফিচার যা আপনাকে S3 থেকে নির্দিষ্ট অংশের ডেটা অ্যাক্সেস করতে দেয়, এতে পুরো ফাইল না পড়ে শুধুমাত্র প্রয়োজনীয় অংশ পড়া হয়।
S3 তে ডেটা ফাইল সাইজ খুব গুরুত্বপূর্ণ। যদি ফাইলগুলো খুব ছোট হয়, তবে অতিরিক্ত ওভারহেড হতে পারে। যদি ফাইলগুলো বড় হয়, তবে সেগুলি প্রক্রিয়া করার সময় মেমরি সমস্যা হতে পারে।
Presto কোয়েরি ফলাফল ক্যাশ করতে পারে, যাতে পূর্বে চালিত কোয়েরি আবার চালানোর প্রয়োজন না হয়। এর ফলে দ্রুত ফলাফল পাওয়া যায় এবং S3 থেকে ডেটা পুনরায় পড়ার প্রয়োজন হয় না।
S3 পারফরম্যান্স মেট্রিক্স মনিটর করা গুরুত্বপূর্ণ, কারণ এটি পারফরম্যান্স বোতলনেকস সনাক্ত করতে সাহায্য করে।
হার**
Presto-তে S3 Query Optimization Techniques ব্যবহার করে, আপনি S3 থেকে ডেটা দ্রুত এবং কার্যকরীভাবে প্রসেস করতে পারবেন। Data Partitioning, Columnar File Formats, Predicate Pushdown, Parallel Query Execution, S3 Select, Caching, এবং File Size Optimization এসব কৌশল S3 থেকে ডেটা অ্যাক্সেস করার সময় পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত করতে সহায়ক।
Read more